const fs = require('fs')

/**
 * 读取流
 *      在前面学习 同步读取、异步读取、他们都是一次性读取文件
 *          缺点：
 *                  无法精准控制读取开始位置和读取结束位置
 *                  无法做到读取到某一个位置、暂停读取、再恢复读取
 *                  当文件较大时、进行多次读取
 */

/**
 * 1、创建可读流
 */
const read = fs.createReadStream('./xinwen.txt', {
    // 不配置 start 和 end 参数就是读取全部
    start: 0,            // 设置读取开始位置
    end: 100,            // 设置读取结束位置
    encoding: 'utf-8',   // 读取后转化的字节编码
    highWaterMark: 3,    // 每次读取几个字节、默认读取64kb
});

// 通过 on 事件监听流的读取
read.on('data', (data) => {
    console.log(data);
    read.pause() // 暂停读取
    setTimeout(() => {
        read.resume() // 恢复读取
    }, 30)
})
// 其他事件：监听文件打开
read.on('open', () => {
    console.log("【文件打开，开始读取...】");
})

// 其他事件：监听文件读取结束
read.on('end', () => {
    console.log("【文件读取完成...】");
})

// 其他事件：文件读取结束、并且关闭文件
read.on('close', (data) => {
    console.log("【文件关闭】",data);
})
